JavaScript
part 20/23 ยท 89.0 KB total
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Object.prototype. Si la recherche รฉchoue cette fois, comme le prototype
de Object.prototype est รฉgal ร null, la recherche s'arrรชte et JavaScript
gรฉnรจre une erreur de rรฉsolution de nom. Ce mรฉcanisme de recherche
parcourt ce qu'on appelle la chaรฎne de prototypes.
Le code de l'opรฉrateur instanceOf illustre bien ce mรฉcanisme. A
instanceOf B (ou de maniรจre รฉquivalente : instanceOf.call(A, B)) renvoie
true si A est une instance de B, c'est-ร -dire si B.prototype est trouvรฉ
dans le chaรฎne de prototypes de A, et false sinon :
function instanceOf(f) {
let o = this;
while (o !== null) {
o = Object.getPrototypeOf(o);
if (o === f.prototype) {
return true;
}
}
return false;
}
Par ailleurs, la mรฉthode Object.create introduite dans ECMAScript 5
permet d'รฉviter d'utiliser directement les fonctions constructeurs,
leurs propriรฉtรฉs prototype et l'opรฉrateur new, pour ne travailler
qu'avec des objets. L'utilisation de cette mรฉthode simplifie grandement
la complexitรฉ du code et est donc recommandรฉe. La mรฉthode Object.create
est dรฉfinie par
if (typeof Object.create !== 'function') {
Object.create = function (o) {
function F() {}
F.prototype = o;
return new F();
};
}
L'exemple prรฉcรฉdent peut alors รชtre rรฉรฉcrit
const MonObjet = {
function initialiser() {
this.maPropriete1 = 3;
}
}
const monInstance = Object.create(MonObjet);
monInstance.initialiser();
alert(monInstance.maPropriete1); // affiche 3
MonObjet.maPropriete2 = 5;
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ